package com.itheima.service.impl;

import cn.itheima.health.service.CheckItemService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.healt.entlty.QueryPageBean;
import com.itheima.mapper.CheckItemMapper;
import com.itheima.pojo.CheckItem;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

// 第四步： 接口创建完成之后  就可以在 生产者中 创建接口的实现类

@Service  // 添加@Service 注解  表示 这是一个 service层
@Transactional //后期如果 有事务 我们就添加事务注解
public class CheckItemServiceImpl implements CheckItemService {

    @Autowired //这里给XxxMapper 映射类 添加一个@Autowired 注解 交给Spring容器做管理
    //因为要做 增删改查 等功能  所以 需要 这里创建一个 XxxMapper的映射类
    private CheckItemMapper checkItemMapper;

    @Override
    public void add(CheckItem checkItem) {
    //在方法中   给checkItemMapper 创建一个 add 添加的方法，传入checkItem参数
      int num =  checkItemMapper.add(checkItem);// 给方法一个返回值，作为 添加成功，或者添加失败 的响应
        System.out.println("checkItem = " + checkItem);
      /*    抛出异常
          if (num==0){
            throw
        }*/
    }

    @Override
    public Map findPage(QueryPageBean queryPageBean) {
        
        //因为返还的是一个Map 集合 所以不管三七二十一 先创建一个Map 集合
        Map map = new HashMap();
        // PageHelper ： 页面助手/  startPage： 首页 /getCurrentPage() ：获取当前页 /getPageSize() ： 获取页面显示的个数
        PageHelper.startPage(queryPageBean.getCurrentPage(),queryPageBean.getPageSize());
        // 给 checkItemMapper 添加 一个 findPage() 查询所有的方法 然后封装成 List 集合
                    // 在 findPage(queryPageBean.getQueryString()) 中添加queryPageBean.getQueryString() 表示条件查询的插入值
       List<CheckItem> list= checkItemMapper.findPage(queryPageBean.getQueryString());  //select * from t_checkitem
        //因为 页面 需要封装到 页面数据中，所以先创建一个  PageInfo ，数据类型是 CheckItem
        PageInfo<CheckItem> pageInfo = new PageInfo<>(list);
        // 把数据 封装到Map 集合当中， 取key 为 ： list
        map.put("list",pageInfo.getList());
        System.out.println(pageInfo.getList());
        map.put("total",pageInfo.getTotal());
        return map;
    }

    @Override
    public void deleteCheckItemById(Integer id) {
        // 在 CheckItemMapper 对象中创建一个  deleteCheckItemById 方法， 然后根据方法 将参数传进去传入一个参数作为条件
        checkItemMapper.deleteCheckItemById(id);
    }

    @Override
    public void edit(CheckItem checkItem) {
        // 在 CheckItemMapper 对象中创建一个  edit 方法， 然后根据方法 将参数传进去传入一个参数作为条件
        checkItemMapper.edit(checkItem);
    }

    @Override
    public List<CheckItem> findAll() {
        //返回一个创建的 Mapper.findAll 结合
        return checkItemMapper.findAll();
    }
}
